package com.atwisdom.star.core.dsl.listener;

import com.alibaba.fastjson.JSONObject;
import com.atwisdom.star.common.vo.ActionData;
import com.atwisdom.star.common.vo.PageInfo;
import com.atwisdom.star.common.vo.ResultInfo;
import com.atwisdom.star.core.dao.pojo.EventListener;
import com.atwisdom.star.exception.pojo.BusinessException;

import java.util.List;

public interface EventListenerDslService {
    /**
     * 添加模型
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<?> add(ActionData<JSONObject> actionData) throws BusinessException;

    /**
     * 批量添加模型
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<?> batchAdd(ActionData<JSONObject> actionData)  throws BusinessException;

    /**
     * 更新
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<?> update(ActionData<JSONObject> actionData) throws BusinessException;

    /**
     * 批量更新
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<?> batchUpdate(ActionData<JSONObject> actionData) throws BusinessException;

    /**
     * 删除
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<Integer> delete(ActionData<JSONObject> actionData) throws BusinessException;


    /**
     * 批量删除
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<Integer> batchDelete(ActionData<JSONObject> actionData) throws BusinessException;

    /**
     * 删除
     *
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<Integer> deleteByIds(ActionData<JSONObject> actionData) throws BusinessException;

    /**
     * 简单查询
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<?> query(ActionData<JSONObject> actionData) throws BusinessException;

    List<EventListener> query(String producer, String triggerName);

    /**
     * 根据id数组进行简单查询
     *
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<?> queryByIds(ActionData<JSONObject> actionData) throws BusinessException;

    ResultInfo<?> queryById(ActionData<JSONObject> actionData) throws BusinessException;

    /**
     * 分页查询
     * @param actionData 参数
     * @return 返回值
     */
    ResultInfo<PageInfo> queryByPage(ActionData<JSONObject> actionData) throws BusinessException;
}
